const jobData = {
    id: 2, // 职业ID，用于唯一标识一个职业
    name: '法师', // 职业名称（中文）
    name_en: null, // 职业英文名，如果适用的话
    description: '远程魔法输出，拥有强大的元素与爆发能力。', // 职业描述，通常用于展示职业特点
    level: 1, // 职业等级，这里可能是指该职业的基础或初始等级
    parent_id: null, // 父级职业ID，用于支持职业进阶系统，null表示没有父级职业
    required_level: 1, // 进入或选择这个职业所需的玩家最低等级
    required_job_id: null, // 如果需要特定职业作为前置条件，则填写对应的职业ID，null表示无要求
    required_skill_ids: null, // 若需掌握某些技能才能解锁此职业，则列出这些技能的ID，null表示无技能要求
    required_item_ids: null, // 需要特定物品才能解锁此职业，则列出这些物品的ID，null表示无需物品
    base_hp: 80, // 基础生命值，即角色在1级时的生命值
    base_mp: 200, // 基础魔法值，即角色在1级时的魔法值
    base_attack: 20, // 基础攻击力，影响物理攻击伤害
    base_defense: 15, // 基础防御力，减少受到的物理伤害
    base_magic_attack: 40, // 基础魔法攻击力，影响魔法攻击伤害
    base_magic_defense: 25, // 基础魔法防御力，减少受到的魔法伤害
    base_speed: 4, // 基础速度，影响角色移动速度和攻击速度
    base_critical_rate: '3.00', // 基础暴击率，决定角色触发暴击的概率
    growth_hp: '8.00', // 每升一级增加的生命值
    growth_attack: '1.00', // 每升一级增加的攻击力
    growth_defense: '0.80', // 每升一级增加的防御力
    growth_speed: '0.50', // 每升一级增加的速度
    job_type: 'mage', // 职业类型，用于分类和识别不同类型的职位
    can_dual_wield: 0, // 是否能双持武器，1表示可以，0表示不可以
    primary_weapon_type: 'staff', // 主要武器类型，例如法杖、剑等
    armor_preference: 'cloth', // 推荐穿戴的护甲类型，例如布甲、皮甲等
    is_active: 1, // 表示该职业是否可用或活跃，1为可用，0为不可用
    sort_order: 0, // 用于排序，决定了在列表中显示的顺序
    icon_url: 'https://cdn.example.com/icons/mage_basic.png', // 职业图标URL，用于UI展示
    unlock_condition: null // 解锁条件，如果是特殊条件解锁的职业，则详细说明条件，null表示无特殊条件
}
const characterData = {
    id: 1, // 角色ID，用于唯一标识一个角色
    user_id: '1', // 用户ID，关联到哪个用户创建了这个角色
    name: '测试法师', // 角色名字
    gender: 'male', // 性别，'male' 或 'female'
    avatar: null, // 角色头像链接，如果有的话
    job_class_id: 2, // 当前角色所选职业的ID
    level: 50, // 角色当前等级
    exp: 0, // 当前经验值
    max_exp: 100, // 升至下一级所需的最大经验值
    status: 'active', // 角色状态，如'active', 'inactive'
    strength: 6, // 力量属性，影响物理攻击力
    intelligence: 12, // 智力属性，影响魔法攻击力
    dexterity: 7, // 敏捷属性，影响攻击命中率和闪避率
    vitality: 6, // 体力属性，影响生命值和防御力
    base_hp: 80, // 角色的基础生命值，在1级时的生命值
    base_mp: 200, // 角色的基础魔法值，在1级时的魔法值
    base_stamina: 80, // 角色的基础耐力值，影响持续作战能力
    attack: '29.00', // 角色当前的攻击力
    defense: '22.20', // 角色当前的防御力
    speed: '7.50', // 角色当前的速度
    critical_rate: '3.70', // 角色当前的暴击率
    current_hp: 80, // 当前生命值
    current_mp: 200, // 当前魔法值
    current_stamina: 80, // 当前耐力值
    map_id: '00000001', // 当前所处地图的ID
    x: '100.00', // 在地图上的X坐标位置
    y: '100.00', // 在地图上的Y坐标位置
    last_login: null // 上次登录时间，可用于追踪用户活动
}
function _validateCharacterData(characterData, jobData) {
    // 获取用户等级
    const level = characterData.level;
    // 获取职业基础属性
    const baseHp = jobData.base_hp;//基础生命值
    const baseMp = jobData.base_mp;//基础魔法值
    const baseAttack = jobData.base_attack;//基础攻击力
    const baseDefense = jobData.base_defense;// 基础防御力
    const baseMagicAttack = jobData.base_magic_attack;//基础魔法攻击力
    const baseMagicDefense = jobData.base_magic_defense;//基础魔法防御力
    const baseSpeed = jobData.base_speed;//基础速度
    const baseCriticalRate = jobData.base_critical_rate;//基础暴击率
    // 获取用户成长属性
    const growthHp = jobData.growth_hp;//生命值成长
    const growthAttack = jobData.growth_attack;//攻击力成长
    const growthDefense = jobData.growth_defense;//防御力成长
    const growthSpeed = jobData.growth_speed;//速度成长
    // 计算用户属性
    const hp = baseHp + (level - 1) * growthHp;
    const mp = baseMp + (level - 1) * growthHp;
    const attack = baseAttack + (level - 1) * growthAttack;
    const defense = baseDefense + (level - 1) * growthDefense;
    const magicAttack = baseMagicAttack + (level - 1) * growthAttack;
    const magicDefense = baseMagicDefense + (level - 1) * growthDefense;
    const speed = baseSpeed + (level - 1) * growthSpeed;
    const criticalRate = baseCriticalRate;
    // 判断用户属性是否合法
    if (hp < 0 || mp < 0 || attack < 0 || defense < 0 || magicAttack < 0 || magicDefense < 0 || speed < 0 || criticalRate < 0) {
        throw new Error('角色属性不能为负数');
    }
    // 需要返回的数据

    let newData = {
        isLegal: true,
        data: {
            hp,
            mp,
            attack,
            defense,
            magicAttack,
            magicDefense,
            speed,
            criticalRate
        }
    }
    // 判断用户属性是否等于计算出的属性（不匹配则标注为不匹配）
    if (hp !== characterData.base_hp || mp !== characterData.base_mp || attack !== characterData.attack || defense !== characterData.defense || magicAttack !== characterData.magic_attack || magicDefense !== characterData.magic_defense || speed !== characterData.speed || criticalRate !== characterData.critical_rate) {
        newData.isLegal = false
    }
    return newData
}

let data = _validateCharacterData(characterData, jobData)
console.log(data);
